//package com.cj.allTest.genericity;
//
////自己设计泛型
//public class demo3 {
//    public static void main(String[] args) {
//        ArrayList<String> list = new ArrayList<String>(2);
//        list.add("菜鸟明。");
//        System.out.println(list.get(0));
//
//    }
//
//}
////E是指我们的数据类型，当我们在实例化的时候必须要指明他的类型
//class ArrayList<E>{
//    private Object[] elementDate;
//    private int size = 0;
//    //initialCapacity初始容量
//    public ArrayList(int initialCapacity){
//        this.elementDate = new Object[initialCapacity];
//    }
//	//这里的E就是我们要添加数据的类型，其必须与最开始定义的类型相同
//    public boolean add(E e){
//        elementDate[size++] = e;
//        return true;
//    }
//
//     public E get(int index){
//        return (E) elementDate[index];
//    }
//
//    /**
//     * 泛型方法的基本介绍
//     * @param tClass 传入的泛型实参
//     * @return T 返回值为T类型
//     * 说明：
//     *     1）public 与 返回值中间<T>非常重要，可以理解为声明此方法为泛型方法。
//     *     2）只有声明了<T>的方法才是泛型方法，泛型类中的使用了泛型的成员方法并不是泛型方法。
//     *     3）<T>表明该方法将使用泛型类型T，此时才可以在方法中使用泛型类型T。
//     *     4）与泛型类的定义一样，此处T可以随便写为任意标识，常见的如T、E、K、V等形式的参数常用于表示泛型。
//     */
//    public <T> T genericMethod(Class<T> tClass)throws InstantiationException ,
//            IllegalAccessException{
//        T instance = tClass.newInstance();
//        return instance;
//    }
//
//}
